import tkinter as tk
from tkinter import messagebox
import re  # 导入正则表达式库
from paddleocr import PaddleOCR
import threading
from concurrent.futures import ThreadPoolExecutor
from wechat_code_retrieval import init

ocr_engine = PaddleOCR(use_angle_cls=False, lang="ch", cls_thresh=1, use_gpu=False)
# 创建应用窗口
root = tk.Tk()
root.title("rpa")

# 获取屏幕宽度和高度
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

# 计算窗口位置，使其居中
root.geometry("600x450")
root.config(bg="#f0f0f0")  # 背景颜色

# 定义字体样式（Windows 10 字体）
font_style = ("Segoe UI", 11)

# 创建标题标签
title_label = tk.Label(root, text="数据自动采集", font=("Segoe UI", 16, "bold"), fg="#333", bg="#f0f0f0")
title_label.grid(row=0, column=0, columnspan=2, pady=30, padx=180)  # 使用grid布局，跨越两列

# 创建关键字和设备IP输入框，配对放在同一行
tk.Label(root, text="搜索关键词：", font=font_style, bg="#f0f0f0").grid(row=1, column=0, padx=5, pady=5, sticky="e")  # "e" 为右对齐
keyword_entry = tk.Entry(root, font=font_style, width=25, bd=1, relief="raised")  # 增加宽度和立体感
keyword_entry.grid(row=1, column=1, pady=5, sticky="ew")  # 输入框放在第1列
keyword_entry.insert(0, "小红书矩阵,小红书内容发布")

# 创建设备IP输入框
tk.Label(root, text="设备 IP：", font=font_style, bg="#f0f0f0").grid(row=1, column=2, padx=5, pady=5, sticky="e")  # "e" 为右对齐
ip_entry = tk.Entry(root, font=font_style, width=25, bd=1, relief="raised")  # 增加宽度和立体感
ip_entry.grid(row=1, column=3, pady=5, sticky="ew")  # 输入框放在第1列
ip_entry.insert(0, "10.88.80.91,10.88.81.97")  # 设置默认值

# 创建循环次数输入框
tk.Label(root, text="采集次数：", font=font_style, bg="#f0f0f0").grid(row=2, column=0, padx=10, pady=15, sticky="e")  # "e" 为右对齐
loop_count_entry = tk.Entry(root, font=font_style, width=25, bd=1, relief="raised")  # 增加宽度和立体感
loop_count_entry.grid(row=2, column=1, pady=5, sticky="ew")  # 输入框放在第1列
loop_count_entry.insert(0, "1")  # 设置默认值


# 定义提交按钮的事件处理函数
def submit():
    keyword = keyword_entry.get()  # 获取关键字
    if not keyword:  # 判断关键字是否为空
        messagebox.showerror("输入错误", "关键字不能为空！")
        return
    try:
        loopCount = int(loop_count_entry.get())  # 获取循环次数，并确保它是一个整数
    except ValueError:
        messagebox.showerror("输入错误", "循环次数必须是一个整数！")
        return

    ip = ip_entry.get()  # 获取设备 IP
    # # 验证 IP 地址是否符合格式
    # ip_pattern = re.compile(r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$")  # 简单的 IP 地址格式验证
    # if not ip_pattern.match(ip):
    #     messagebox.showerror("输入错误", "设备 IP 格式不正确！")
    #     return

    submit_button.config(state="disabled", text="正在执行...")  # 禁用按钮并修改文字

    ipArray = ip.split(",")
    keywordArray = keyword.split(",")


    # 使用线程池管理并发任务
    with ThreadPoolExecutor() as executor:

        # 你可以根据需求调整任务数量，这里只是一个示例
        for index in range(len(ipArray)):
            try:
                if keywordArray[index] != "":
                    executor.submit(init, keywordArray[index], ipArray[index], loopCount, ocr_engine)
            except Exception as e:
                print("错误", f"任务执行出错：{str(e)}")

    # init(keyword,ip,loopCount,ocr_engine)
    #root.after(1000, lambda: init(keyword,ip,loopCount,ocr_engine))
    # 关闭窗口
    #root.quit()

# 创建提交按钮，改进样式（Windows 10 风格）
submit_button = tk.Button(root, text="开始", font=("Segoe UI", 14, "bold"), bg="#87CEFA", fg="white", width=15, height=1,
                          relief="raised", highlightthickness=0, command=submit)  # 增加按钮样式
submit_button.grid(row=4, column=0, columnspan=2, pady=50)

# 运行应用
root.mainloop()